স্ট্যাক (Stack) এবং কিউ (Queue) হলো দুটি মৌলিক ডেটা স্ট্রাকচার, যা ডেটা সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। এই দুটি ডেটা স্ট্রাকচারের নিজস্ব নিয়ম ও বৈশিষ্ট্য রয়েছে, এবং তারা বিভিন্ন ধরনের সমস্যার সমাধানে সাহায্য করে। নিচে স্ট্যাক এবং কিউয়ের অপারেশন ও ব্যবহার আলোচনা করা হলো।
স্ট্যাক (Stack)
স্ট্যাক হলো একটি LIFO (Last In, First Out) ডেটা স্ট্রাকচার। এর মানে হলো, শেষ উপাদানটি প্রথমে বের হয়। স্ট্যাকের প্রধান অপারেশনগুলি হল:
প্রধান অপারেশন:
- Push: নতুন উপাদান স্ট্যাকে যোগ করা।
- Pop: স্ট্যাক থেকে সর্বশেষ উপাদান মুছে ফেলা এবং সেটি রিটার্ন করা।
- Peek/Top: স্ট্যাকের শীর্ষ উপাদানটি দেখতে পাওয়া (মুছে না ফেলে)।
- IsEmpty: স্ট্যাক খালি কিনা পরীক্ষা করা।
উদাহরণ (Python):
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
return None
def peek(self):
if not self.is_empty():
return self.items[-1]
return None
def is_empty(self):
return len(self.items) == 0
# স্ট্যাক তৈরি এবং ব্যবহার
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print("Top element:", stack.peek()) # 3
print("Popped element:", stack.pop()) # 3
print("Is stack empty?", stack.is_empty()) # False
কিউ (Queue)
কিউ হলো একটি FIFO (First In, First Out) ডেটা স্ট্রাকচার। এর মানে হলো, প্রথমে যোগ করা উপাদানটি প্রথমে বের হয়। কিউয়ের প্রধান অপারেশনগুলি হল:
প্রধান অপারেশন:
- Enqueue: নতুন উপাদান কিউতে যোগ করা।
- Dequeue: কিউ থেকে প্রথম উপাদান মুছে ফেলা এবং সেটি রিটার্ন করা।
- Front/Peek: কিউয়ের প্রথম উপাদানটি দেখতে পাওয়া (মুছে না ফেলে)।
- IsEmpty: কিউ খালি কিনা পরীক্ষা করা।
উদাহরণ (Python):
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
return None
def front(self):
if not self.is_empty():
return self.items[0]
return None
def is_empty(self):
return len(self.items) == 0
# কিউ তৈরি এবং ব্যবহার
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print("Front element:", queue.front()) # 1
print("Dequeued element:", queue.dequeue()) # 1
print("Is queue empty?", queue.is_empty()) # False
ব্যবহার
স্ট্যাকের ব্যবহার:
- ফাংশন কল স্ট্যাক: ফাংশনের কল ট্রেসিং এবং রিটার্নিংয়ের জন্য।
- পুনরাবৃত্তি সমস্যা: যেমন টার্নারি ট্রি ট্রাভার্সাল।
- অভিব্যক্তি মূল্যায়ন: পোলিশ এবং ইনফিক্স ক্যালকুলেশন।
- ব্রাউজার হিস্ট্রি: ব্যবহারকারীর পূর্ববর্তী পৃষ্ঠায় ফিরে যাওয়ার জন্য।
কিউয়ের ব্যবহার:
- ক্লাউড কম্পিউটিং: কাজের ব্যাচ প্রক্রিয়াকরণ।
- ব্রাউজার সংযোগ: HTTP অনুরোধের জন্য।
- প্রিন্টার কিউ: মুদ্রণের জন্য কাজের তালিকা।
- ব্লাড ব্যাঙ্ক ম্যানেজমেন্ট: রক্তদানকারীর সেবা প্রদান।
উপসংহার
স্ট্যাক এবং কিউ দুটি মৌলিক ডেটা স্ট্রাকচার, যা বিভিন্ন ধরনের সমস্যার সমাধানে অত্যন্ত কার্যকর। স্ট্যাকগুলি LIFO পদ্ধতির ওপর কাজ করে, যেখানে কিউ FIFO পদ্ধতির ওপর। সঠিকভাবে এই ডেটা স্ট্রাকচারগুলি ব্যবহার করা প্রোগ্রামিং দক্ষতা বৃদ্ধি করে এবং সিস্টেমের কার্যকারিতা বাড়ায়।
Read more